Pages
  • life with BSD
  • 2026-08-01 Using the niri wm on FreeBSD in 2026
  • 2026-07-23 The I'll get to it later problem... for FreeBSD
  • 2026-07-13 On the closing of open searchable sites around OSS projects
  • 2026-06-09 Implementation monocultures
  • 2026-05-28 Using the units command to convert celsius to fahrenheit on FreeBSD
  • 2026-05-11 Trying out spinel on FreeBSD and fixed the blog feeds
  • 2026-04-27 Getting more information on a FreeBSD pkg without installing it
  • 2026-04-19 Feeling sherlocked - XDG's new Projects folder
  • 2026-04-07 The Laptop Integration Testing project
  • 2026-01-02 Migrating from bastille auto-starting jails from deprecated bastille_list
  • 2025-12-23 Understanding more about the pkg-status service for FreeBSD
  • 2025-12-07 Trying out flow control binaries for FreeBSD
  • 2025-11-07 Swift nightly preview for FreeBSD
  • 2025-11-02 Using jujutsu in a git compatible way to track freebsd ports
  • 2025-10-28 The sherlocking of the gemini protocol
  • 2025-10-09 How to change the options in a freebsd port
  • 2025-09-16 Waiting on Swift mainline for FreeBSD
  • 2025-08-25 Dmesg for Cable Matters USB 3.1 to 4 port Gigabit Ethernet Adapter
  • 2025-08-15 Generate a QR code with typst
  • 2025-07-31 Fixing jujutsu and leaky ascii escape sequences on FreeBSD
  • 2025-07-31 Swift now available as a package for FreeBSD
  • 2025-07-28 The FreeBSD project clarifies its stance on gen-ai powered contributions
  • 2025-07-28 The rustup question
  • 2025-07-08 Goodbye old friend, a tale
  • 2025-06-30 Configuring FreeBSD to network with a postmarketos phone over usb
  • 2025-06-25 swift (re)lands in the FreeBSD ports tree
  • 2025-06-24 typst a rust powered typesetting tool aiming at latex
  • 2025-06-19 Open Source Two Worlds thoughts
  • 2025-06-14 Taking a look at repolocli
  • 2025-06-09 Zig master builds now with FreeBSD support
  • 2025-06-07 Finding rust dependencies in Makefile.crates
  • 2025-06-05 Ripgrep or ripgrep-all
  • 2025-06-02 Ripgrep a nice Rust utility for ports spelunking
  • 2025-05-31 Get started with gpui on FreeBSD
  • 2025-05-29 Query freshports with Deno
  • 2025-05-27 Trying out Defuddle an npm tool via Deno
  • 2025-05-25 Deno for FreeBSD
  • 2025-05-23 A new beginning
life with BSD
  • life with BSD
  • 2026-08-01 Using the niri wm on FreeBSD in 2026
  • 2026-07-23 The I'll get to it later problem... for FreeBSD
  • 2026-07-13 On the closing of open searchable sites around OSS projects
  • 2026-06-09 Implementation monocultures
  • 2026-05-28 Using the units command to convert celsius to fahrenheit on FreeBSD
  • 2026-05-11 Trying out spinel on FreeBSD and fixed the blog feeds
  • 2026-04-27 Getting more information on a FreeBSD pkg without installing it
  • 2026-04-19 Feeling sherlocked - XDG's new Projects folder
  • 2026-04-07 The Laptop Integration Testing project
  • 2026-01-02 Migrating from bastille auto-starting jails from deprecated bastille_list
  • 2025-12-23 Understanding more about the pkg-status service for FreeBSD
  • 2025-12-07 Trying out flow control binaries for FreeBSD
  • 2025-11-07 Swift nightly preview for FreeBSD
  • 2025-11-02 Using jujutsu in a git compatible way to track freebsd ports
  • 2025-10-28 The sherlocking of the gemini protocol
  • 2025-10-09 How to change the options in a freebsd port
  • 2025-09-16 Waiting on Swift mainline for FreeBSD
  • 2025-08-25 Dmesg for Cable Matters USB 3.1 to 4 port Gigabit Ethernet Adapter
  • 2025-08-15 Generate a QR code with typst
  • 2025-07-31 Fixing jujutsu and leaky ascii escape sequences on FreeBSD
  • 2025-07-31 Swift now available as a package for FreeBSD
  • 2025-07-28 The FreeBSD project clarifies its stance on gen-ai powered contributions
  • 2025-07-28 The rustup question
  • 2025-07-08 Goodbye old friend, a tale
  • 2025-06-30 Configuring FreeBSD to network with a postmarketos phone over usb
  • 2025-06-25 swift (re)lands in the FreeBSD ports tree
  • 2025-06-24 typst a rust powered typesetting tool aiming at latex
  • 2025-06-19 Open Source Two Worlds thoughts
  • 2025-06-14 Taking a look at repolocli
  • 2025-06-09 Zig master builds now with FreeBSD support
  • 2025-06-07 Finding rust dependencies in Makefile.crates
  • 2025-06-05 Ripgrep or ripgrep-all
  • 2025-06-02 Ripgrep a nice Rust utility for ports spelunking
  • 2025-05-31 Get started with gpui on FreeBSD
  • 2025-05-29 Query freshports with Deno
  • 2025-05-27 Trying out Defuddle an npm tool via Deno
  • 2025-05-25 Deno for FreeBSD
  • 2025-05-23 A new beginning

2026-08-01 Using the niri wm on FreeBSD in 2026

I happen to like using a window manager called Niri, however it seems FreeBSD is considered a lower tier supported platform. While there exists a port for Niri that is both buildable and installable for FreeBSD, there are some caveats. One of the caveats is something that folks experience when attempting to use FreeBSD as a daily driver hit is the after-install thousand papercuts problem(s).

This papercut problem manifests itself when attempting to actually use the port and package as normal and finds lots of small (or sometimes not small) gaps in how the software should work versus how it actually works (on FreeBSD).

An example that is probably the easiest to detect is when some program decides to shell out to another program and invokes /bin/bash in order to kick off the shell. On MacOS and Linux, this will work as /bin/bash exists. However, on FreeBSD bash is considered a ported package so will be located at /usr/local/bin/bash. However, if the port hardcodes this path rather than proper invocation, this will fail which requires patching the port to work on FreeBSD.

Niri in more recent versions suffers from this problem which has led me to switch my window manager on FreeBSD and make me a little sad that RIIR crowd usually get to proper FreeBSD support... later.

I stumbled across https://github.com/freebsdfixes/niri which should hopefully address this.

It carries a handful of patches that are needed to build and run niri on FreeBSD 15, plus a setup script, a launcher, and a long-form guide explaining why each change exists.

I haven't had time to sit down and kick the tires on this, but at least it is promising someone else is seeing the same thing (and even better, actioning on it).

PREVRANDOMNEXT